/*
运行使用：RUST_BACKTRACE=1 cargo run
Rust 实现了泛型，使得使用泛型类型参数的代码相比使用具体类型并没有任何速度上的损失。
c++ 称为模板
*/
struct MyChkStc<T> {
    a : T,
    b : T,
}
struct MyChkStc1<T, U> {
    a : T,
    b : U,
}
fn main() {
    {
        let tmpstc = MyChkStc {
            a : 1,
            b : 2
        };
        println!("[{},{}]{},{}", file!(), line!(), tmpstc.a, tmpstc.b);
    }
    {
        // 一个泛型T不能代表2种类型。
        // let tmpstc = MyChkStc {
        //     a : 1,
        //     b : 2.0
        // };
        // println!("[{},{}]{},{}", file!(), line!(), tmpstc.a, tmpstc.b);
    }
    {
        let tmpstc = MyChkStc1 {
            a : 1,
            b : "abc"
        };
        println!("[{},{}]{},{}", file!(), line!(), tmpstc.a, tmpstc.b);
    }
}

// fn type_str<T>(_val: &T) -> & 'static str {
//     std::any::type_name::<T>()
// }
